/*
 * Copyright (C), 2002-2017, 苏宁易购电子商务有限公司
 * FileName: AdminActivityDao.java
 * Author:   15060460
 * Date:     2017年4月6日 下午4:19:03
 * Description: //模块目的、功能描述      
 * History: //修改记录
 * <author>      <time>      <version>    <desc>
 * 修改人姓名             修改时间            版本号                  描述
 */
package com.suning.sawp.member.dao;

import java.util.List;
import java.util.Map;

import com.suning.sawp.member.dto.AdminActivity;
import com.suning.sawp.po.store.StoreInfo;

/**
 * 〈一句话功能简述〉<br>
 * 〈功能详细描述〉
 *
 * @author 15060460
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public interface AdminActivityDao {

	/**
	 * 总部，分公司查询活动
	 *
	 * @param areaCode
	 * @param companyCode
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	List<AdminActivity> queryActivitys(String areaCode, String role, Long start, Long limit);

	Long queryActivitysCount(String areaCode, String role);

	/**
	 * 店长查询活动 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param areaCode
	 * @param companyCode
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	List<AdminActivity> queryActivitysDz(String storeCode);

	/**
	 * 督导查询活动 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param areaCode
	 * @param companyCode
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	List<AdminActivity> queryActivitysDd(String storeCode, String staffId);

	/**
	 * 删除活动门店关联表数据 功能描述: <br>
	 * 〈功能详细描述〉
	 *
	 * @param activityId
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	int deleteActivityStore(String activityId);

	Long countStoreCustomer(Long activityId, String storeCode);

	void deleteActStoreAssociatedData(Long activityId, String storeCode);

	/**
	 * 查询店员某活动发展的客户列表
	 */
	public <T> List<T> queryCustomerDetailByEmployeeId(Long activityId, String employeeId, String source, int start, int end, Class<T> clazz);

	public long countCustomerDetailByEmployeeId(Long activityId, String employeeId, String source);

	/**
	 * 店长或督导查询某活动的发展所有客户列表
	 */
	public <T> List<T> queryCustomerDetailByDZDD(Long activityId, String storeCode, String cateCodes, String source, int start, int end, Class<T> clazz);

	public long countCustomerDetailByDZDD(Long activityId, String storeCode, String cateCodes, String source);

	/**
	 * 
	 * detailId-->custId-->labelNames <br/>
	 * 根据detailId反查到custId,再去查询对应的标签名称
	 *
	 * @param detailId
	 *            客户资料详情表ID
	 * @return
	 */
	public String queryLabelNamesByCustDetailId(Long detailId);

	/**
	 * 根据手机号，或者custNo，查询此人的购买数据
	 *
	 * @param mobile
	 * @param custNo
	 * @return
	 */
	public List<Map<String, Object>> querySaleInfo(String mobile, String custNo, Long activityId);

	/**
	 * 查询外拓地点
	 * 
	 * @param expandId
	 * @return
	 */
	public String queryPlaceByExpandId(String expandId);

	/**
	 * 根据分公司财务编码 查询其下辖的门店列表
	 *
	 * @param saleBranchCode
	 *            分公司财务编码
	 * @return
	 */
	public List<StoreInfo> queryStoresBySaleBranchCode(String saleBranchCode, String storeTypeCode);

	/**
	 * 根据大区编码 查询其下辖的门店列表
	 *
	 * @param regionCode
	 *            大区编码
	 * @return
	 */
	public List<StoreInfo> queryStoresByRegionCode(String regionCode, String storeTypeCode);

}
